package com.sdu.cloudservice.service;

/**爬虫状态
 * Create by zekdot on 19-6-22.
 */

import com.google.gson.Gson;
import com.sdu.cloudservice.entity.SpiderHistoryEntity;
import net.sf.json.JSONArray;
import org.apache.commons.collections.map.HashedMap;

import java.sql.Timestamp;
import java.util.Date;
import java.util.Map;

/**
 * 当前区域 区域进度(进度条) √
 * 当前可用区 可用区进度(进度条) √
 * 当前实例 实例进度(进度条) √
 * 是否工作 √
 * 多久更新一次（更新频率）1~24小时 √
 * 哪些区域需要更新，哪些区域不需要更新(当频率小于24小时时不能添加新的需要更新的区域因为爬取30天内容可能无法在24小时内完成)
 * 上一次工作开始时间 √
 * 上一次工作结束时间 √
 * 最新每一个区域爬取成功条数(统计图) √
 */
public class SpiderStatus {
    // 爬虫当前是否在工作
    public static boolean isWorking = false;
    // 爬虫当前访问的地域
    public static String curRegion = "";
    // 当前地域进度
    public static int curRegionProgress[] = {0,0};
    // 爬虫当前访问的可用区
    public static String curZone = "";
    // 当前可用区进度
    public static int curZoneProgress[] = {0,0};
    // 爬虫当前访问的实例
    public static String curInstance = "";
    // 当前实例进度
    public static int curInstanceProgress[] = {0,0};
    // 几小时更新一次，默认4小时
    public static int fraquency = 4;
    // 上一次工作开始时间
    public static String workingStartTime = "";
    // 上一次工作结束时间
    public static String workingEndTime = "";
    // 最新每一个区域爬取成功条数(统计图)
    public static int regionsSuccessNum[];
    // 最新每一个区域的名称(统计图)
    public static String regionName[];
    // 是否在演示中
    public static boolean isShow = true;
    /**
     * 获取当前工作状态的json字符串
     * @return 工作状态字符串
     */
    public static String getCurrentWorkingJson(){
        Map<String,Object> resMap = new HashedMap();
        resMap.put("isWorking",isWorking);
        resMap.put("curRegion",curRegion);
        resMap.put("totalRegionNum",curRegionProgress[1]);
        resMap.put("curRegionNum",curRegionProgress[0]);
        resMap.put("curZone",curZone);
        resMap.put("totalZoneNum",curZoneProgress[1]);
        resMap.put("curZoneNum",curZoneProgress[0]);
        resMap.put("curInstance",curInstance);
        resMap.put("totalInstanceNum",curInstanceProgress[1]);
        resMap.put("curInstanceNum",curInstanceProgress[0]);
        return new Gson().toJson(resMap);
    }
    /**
     * 将爬虫状态转换为历史实体
     * @return
     */
    public static SpiderHistoryEntity toHistoryEntity(){
        SpiderHistoryEntity spiderHistoryEntity = new SpiderHistoryEntity();
        spiderHistoryEntity.setStartTime(workingStartTime);
        spiderHistoryEntity.setEndTime(workingEndTime);
        spiderHistoryEntity.setRegionNames(JSONArray.fromObject(regionName).toString());
        spiderHistoryEntity.setRegionNums(JSONArray.fromObject(regionsSuccessNum).toString());
        spiderHistoryEntity.setTime(new Timestamp(new Date().getTime()));
        return spiderHistoryEntity;
    }

    public static void main(String args[]){
        SpiderStatus.isWorking = true;
        SpiderStatus.curRegion = "亚太 1";
        SpiderStatus.curRegionProgress[0] = 3;
        SpiderStatus.curRegionProgress[1] = 20;
        SpiderStatus.curZone = "亚太 可用区A";
        SpiderStatus.curZoneProgress[0] = 2;
        SpiderStatus.curZoneProgress[1] = 3;
        SpiderStatus.curInstance = "cn-esc-xlarge";
        SpiderStatus.curInstanceProgress[0] = 15;
        SpiderStatus.curInstanceProgress[1] = 23;
        System.out.println(SpiderStatus.getCurrentWorkingJson());
    }
}
